/*
 * @lc app=leetcode.cn id=2038 lang=cpp
 *
 * [2038] 如果相邻两个颜色均相同则删除当前颜色
 */
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>

using namespace std;
// @lc code=start
class Solution {
public:
    bool winnerOfGame(string colors) {
        //贪心算法
        //因为是拿三个数中间的那个数，所以不会存在拿走之后对方三连棋子增加的情况
        //而且连续的棋子越多，可以操作的步数就是线性增加，所以可以按贪心计数法
        vector<int> ret(2,0);
        char cur = 'C';
        int cnt = 0;
        for(char c : colors) {
            if(c != cur) {
                cur = c;
                cnt = 1;
            }else {
                cnt++;
                if(cnt >= 3) {
                    ret[cur - 'A']++;
                }
            }
        }
        return ret[0] > ret[1];
    }
};
// @lc code=end

//模拟算法超时
// int n = colors.length();
//     //1代表alice, 0代表bob
//     int flag = 1;
//     if(n < 3) {
//         return false;
//     }
//     while(true) {
//         if(colors.length() < 3) {
//             return flag == 0? true: false; 
//         }
//         if(flag) {
//             for(int i = 0;i < n-2;i++) {
//                 if(colors[i] == 'A' && colors[i] == colors[i+1] && colors[i] == colors[i+2]) {
//                     flag = 0;
//                     colors.erase(i+1,1);
//                     break;
//                 }
//             }
//             if(flag == 1) {
//                 return false;
//             }
//         }else if(!flag) {
//             for(int i = 0;i < n-2;i++) {
//                 if(colors[i] == 'B' && colors[i] == colors[i+1] && colors[i] == colors[i+2]) {
//                     flag = 1;
//                     colors.erase(i+1,1);
//                     break;
//                 }
//             }
//             if(flag == 0) {
//                 return true;
//             }
//         }
//     }

